<?php

class Indicadores_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function extraePostulados($fecIni, $fecFin, $dep, $ciu) {
        //genera el sql de los filtros
//       echo "$fecIni -- $fecFin -- $dep -- $ciu";
        $sqlAux = "";
        $sqlAux1 = "";
        $sqlAux .= ($fecIni != "") ? " and postu.`postulacionFecha` >= '$fecIni'" : "";
        $sqlAux .= ($fecFin != "") ? " and postu.`postulacionFecha` <= '$fecFin'" : "";
        $sqlAux1 .= ($dep != "") ? " and dep.`dptCod` = '$dep'" : "";
        $sqlAux1 .= ($ciu != "") ? " and ciu.`ciudadId` = '$ciu'" : "";
        /* Se extrae toda la informacion para graficar */
        $values = "";
        $labels = "";
        $postulados = array();
        $contratados = array();
        $resultados = array();
        $parametros = array();
        $totContratados = 0;
        $totPostulados = 0;
        //calcula primero todas las ciudades que tienen postulaciones laborales
        $sql = "select ciu.ciudad,count(ofer.ofertaLaboralId) as total from ofertaslaborales ofer
       inner join postulaciones postu on postu.ofertaLaboralId = ofer.ofertaLaboralId
            inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId
            inner join departamentos dep on dep.`dptCod` = ciu.`dptCod`
            where 1=1 $sqlAux $sqlAux1
            group by ofer.ciudadId order by ciu.ciudad";
        $result = $this->db->query($sql);
        foreach ($result->result() as $row) {
            $postulados[$row->ciudad] = $row->total;
        }
        //calcula el número de contratados por ciudad
        $sql = "select ciu.ciudad,count(ofer.ofertaLaboralId) as total from ofertaslaborales ofer
	inner join postulaciones postu on postu.ofertaLaboralId = ofer.ofertaLaboralId
	inner join contratos contra on contra.postulacionesId = postu.postulacionesId
            inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId
            inner join departamentos dep on dep.`dptCod` = ciu.`dptCod`
            where 1=1 $sqlAux $sqlAux1
            group by ofer.ciudadId order by ciu.ciudad";
        $result = $this->db->query($sql);
//       echo "$sql <br/>";
        foreach ($result->result() as $row) {
            $contratados[$row->ciudad] = $row->total;
        }
        //calcula el total nacional
        $sql = "select ciu.ciudad,count(ofer.ofertaLaboralId) as total from ofertaslaborales ofer
       inner join postulaciones postu on postu.ofertaLaboralId = ofer.ofertaLaboralId
            inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId
            inner join departamentos dep on dep.`dptCod` = ciu.`dptCod`
            where 1=1 $sqlAux 
            group by ofer.ciudadId order by ciu.ciudad";
        $result = $this->db->query($sql);
//       exit($sql);
        foreach ($result->result() as $row) {
            $totPostulados += $row->total;
        }
        $sql = "select ciu.ciudad,count(ofer.ofertaLaboralId) as total from ofertaslaborales ofer
	inner join postulaciones postu on postu.ofertaLaboralId = ofer.ofertaLaboralId
	inner join contratos contra on contra.postulacionesId = postu.postulacionesId
            inner join ciudades ciu on ciu.ciudadId = ofer.ciudadId
            inner join departamentos dep on dep.`dptCod` = ciu.`dptCod`
            where 1=1 $sqlAux 
            group by ofer.ciudadId order by ciu.ciudad";
        $result = $this->db->query($sql);
        foreach ($result->result() as $row) {
            $totContratados += $row->total;
        }
        //Se recorren las postulaciones para realizar los calculos necesarios
        foreach ($postulados as $ciudad => $valor) {
            if (isset($contratados[$ciudad])) {
                $resultados[$ciudad] = $contratados[$ciudad] / $valor * 100;
            } else {
                $resultados[$ciudad] = 0;
            }
        }
        foreach ($resultados as $indice => $valor) {
            $values .= "$valor ,";
            $labels .= "'$indice' ,";
        }
        if ($totPostulados > 0)
            $values .= $totContratados / $totPostulados * 100;
        $labels .= "'Nacional'";
        //ya queda pendiente generar las estadisticas recorriendo los dos arreglos
        $parametros["values"] = $values;
        $parametros["labels"] = $labels;
        $parametros["titulo"] = "% Postulados vs Contratados";
        return $parametros;
    }

//fin extraePostulados
}

?>
